package com.hyt.it.ogt.kq.common.gov.secmodule;

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;

/**
 * 调用模块动态库
 * 
 * @author liuq
 * @since 2021-06-01
 */
public interface SecModule extends Library {
	
	SecModule INSTANCE = (SecModule) Native.load("SecModule", SecModule.class);

	/**
	 * 加密字符串
	 *
	 *
	 *
	 *
	 * @param szPlaintext 明文
	 * @param pszCiphertextBuf 密文缓冲区
	 * @return 0：成功；1：明文为空；2：密文缓冲区为空；3：明文和密文缓冲区都为空
	 */
	int EncrypString(byte[] szPlaintext, Pointer pszCiphertextBuf);
//	int EncrypString_s(byte[] szPlaintext, int nInBufSize, Pointer pszOutBuf, IntByReference nOutBufSize);
	int EncrypString(String szPlaintext, Pointer pszCiphertextBuf);


	/**
	 * 解密字符串
	 * @param szCiphertext 密文
	 * @param pszPlaintextBuf 明文缓冲区
	 * @return 0：成功；1：密文为空；2：明文缓冲区为空；3：密文和明文缓冲区都为空
	 */
	int DecrypString2(byte[] szCiphertext, Pointer pszPlaintextBuf);
	int DecrypString(String szCiphertext, Pointer pszPlaintextBuf);

	/**
	 * 加密密码
	 * @param roomTimeCode 1-个人补时 10，30分钟 2-整场考试密码 3-个人迟到密码 4-单机考试密码
	 * @param passType
	 * @param nTime
	 * @param pszCiphertextBuf
	 * @return
	 */
	int GenExamPass(byte[] roomTimeCode, int passType, int nTime, Pointer pszCiphertextBuf);

	/**
	 * 文件验证
	 * @param szPass
	 * @param szSourceFile
	 * @return
	 */
	int FileVerify(String szPass, String szSourceFile);

	/**
	 * 文件签名
	 * @param szPass
	 * @param szSourceFile
	 * @return
	 */
	int FileSign(String szPass, String szSourceFile);

}
